module cyclic_shifter (
    input  [31:0] data_in,
    input  [5:0] shift_num,
    output reg [31:0] shift_result_out
);

always @(*) begin
    case (shift_num)
        6'd0,6'd32: shift_result_out = data_in;
        6'd1,6'd33: shift_result_out = {data_in[30:0],data_in[31:31]};
        6'd2,6'd34: shift_result_out = {data_in[29:0],data_in[31:30]};
        6'd3,6'd35: shift_result_out = {data_in[28:0],data_in[31:29]};
        6'd4,6'd36: shift_result_out = {data_in[27:0],data_in[31:28]};
        6'd5,6'd37: shift_result_out = {data_in[26:0],data_in[31:27]};
        6'd6,6'd38: shift_result_out = {data_in[25:0],data_in[31:26]};
        6'd7,6'd39: shift_result_out = {data_in[24:0],data_in[31:25]};
        6'd8,6'd40: shift_result_out = {data_in[23:0],data_in[31:24]};
        6'd9,6'd41: shift_result_out = {data_in[22:0],data_in[31:23]};
        6'd10,6'd42: shift_result_out = {data_in[21:0],data_in[31:22]};
        6'd11,6'd43: shift_result_out = {data_in[20:0],data_in[31:21]};
        6'd12,6'd44: shift_result_out = {data_in[19:0],data_in[31:20]};
        6'd13,6'd45: shift_result_out = {data_in[18:0],data_in[31:19]};
        6'd14,6'd46: shift_result_out = {data_in[17:0],data_in[31:18]};
        6'd15,6'd47: shift_result_out = {data_in[16:0],data_in[31:17]};
        6'd16,6'd48: shift_result_out = {data_in[15:0],data_in[31:16]};
        6'd17,6'd49: shift_result_out = {data_in[14:0],data_in[31:15]};
        6'd18,6'd50: shift_result_out = {data_in[13:0],data_in[31:14]};
        6'd19,6'd51: shift_result_out = {data_in[12:0],data_in[31:13]};
        6'd20,6'd52: shift_result_out = {data_in[11:0],data_in[31:12]};
        6'd21,6'd53: shift_result_out = {data_in[10:0],data_in[31:11]};
        6'd22,6'd54: shift_result_out = {data_in[9:0],data_in[31:10]};
        6'd23,6'd55: shift_result_out = {data_in[8:0],data_in[31:9]};
        6'd24,6'd56: shift_result_out = {data_in[7:0],data_in[31:8]};
        6'd25,6'd57: shift_result_out = {data_in[6:0],data_in[31:7]};
        6'd26,6'd58: shift_result_out = {data_in[5:0],data_in[31:6]};
        6'd27,6'd59: shift_result_out = {data_in[4:0],data_in[31:5]};
        6'd28,6'd60: shift_result_out = {data_in[3:0],data_in[31:4]};
        6'd29,6'd61: shift_result_out = {data_in[2:0],data_in[31:3]};
        6'd30,6'd62: shift_result_out = {data_in[1:0],data_in[31:2]};
        6'd31,6'd63: shift_result_out = {data_in[0:0],data_in[31:1]};
    endcase
end

endmodule //cyclic_shifter